package br.com.bancodados.controller;

import java.util.ArrayList;

import android.content.Context;
import br.com.bancodados.exception.BusinessException;
import br.com.bancodados.model.Carro;
import br.com.bancodados.repositorio.IRepositorioCarro;
import br.com.bancodados.repositorio.RepositorioCarroSQlite;
import br.com.bancodados.repositorio.RepositorioCarroWS;
import br.com.bancodados.util.Util;

public class Controller {

	private static Controller instance;
	private IRepositorioCarro repositorioCarro;
	
	private Controller(Context context){
//		
		if (Util.hasIntenetConnection(context)) {
			repositorioCarro = RepositorioCarroWS.getInstance();
		} else {
			repositorioCarro = RepositorioCarroSQlite.getInstance(context);
		}
	}
	
	public static Controller getInstance(Context context){
		
		if (instance == null) {
			instance = new Controller(context);
		}
		
		return instance;
	}
	
	public void atualizarCarro(Carro carro) throws BusinessException {
		repositorioCarro.atualizarCarro(carro);
	}

	
	public void cadastrarCarro(Carro carro) throws BusinessException {
		repositorioCarro.cadastrarCarro(carro);
	}

	
	public void deletarCarro(Carro carro) throws BusinessException {
		repositorioCarro.deletarCarro(carro);
	}

	
	public ArrayList<Carro> getAllCarros() throws BusinessException {
		return repositorioCarro.getAllCarros();
	}

	
	public ArrayList<Carro> getCarroPorModelo(String modelo)
			throws BusinessException {
		return repositorioCarro.getCarroPorModelo(modelo);
	}
	
	public void changeRepository(Context context) {
		repositorioCarro = RepositorioCarroWS.getInstance();
	}
	
}
